package com.tiancheng.trade.payment.vo.api;

import lombok.Getter;
import lombok.NoArgsConstructor;
import lombok.Setter;

import java.math.BigDecimal;
import java.time.LocalDate;

/**
 * 清分规则
 */
@Getter
@Setter
@NoArgsConstructor
public class SettlementRuleVO {
    /**
     * 商户编号
     */
    private String merchantCode;

    /**
     * 商户名称
     */
    private String merchantName;

    /**
     * 产品编号
     */
    private String productCode;

    /**
     * 产品名称
     */
    private String productName;

    /**
     * 规则编号
     */
    private String ruleCode;

    /**
     * 规则类型(1:产品 2:通用)
     */
    private String ruleType;

    /**
     * 规则名称
     */
    private String ruleName;

    /**
     * 结算类型(1:清分 2:自营，3：平台)
     */
    private String settlementType;

    /**
     * 结算状态(0:未生效,1:已生效,2:已失效,3:作废)
     */
    private String settlementStatus;

    /**
     * 产品单价
     */
    private String productPrice;

    /**
     * 清分周期类型(1:按天 2:按月)
     */
    private String clearingCycleMode;

    /**
     * 清分周期值
     */
    private Integer clearingCycleValue;

    /**
     * 清分周期扩展值
     */
    private Integer clearingCycleValueExt;

    /**
     * 清分规则(1:百分比 2:固定金额)
     */
    private String clearingRule;

    /**
     * 清分-平台应收-百分比
     */
    private BigDecimal platformPre;

    /**
     * 清分-商户应收-百分比
     */
    private BigDecimal merchantPre;

    /**
     * 清分-平台应收-固定金额
     */
    private Integer platformFix;

    /**
     * 清分-商户应收-固定金额'
     */
    private Integer merchantFix;

    /**
     * 线下结算规则
     */
    private String lineClearingRule;

    /**
     * 线下-平台应收-百分比
     */
    private BigDecimal linePlatformPre;

    /**
     * 线下-商户应收-百分比
     */
    private BigDecimal lineMerchantPre;

    /**
     * 线下-平台应收-固定金额
     */
    private Integer linePlatformFix;

    /**
     * 线下-商户应收-固定金额
     */
    private Integer lineMerchantFix;

    /**
     * 规则生效时间
     */
    private LocalDate effectiveDate;

    /**
     * 规则失效时间
     */
    private LocalDate expireDate;

    /**
     * 优先级
     */
    private Integer priorityLevel;
}
